package entity2;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.List;

public class ArquivoPessoa implements IArquivoMetodos<Pessoa> {

	FileWriter fw;  
	
	FileReader fr;      
	BufferedReader bf; 

	
	@Override
	public void openWrite() throws Exception {
	    File dir1= new File("c:/temp");
	      dir1.mkdir(); 
		  fw = new FileWriter("c:/temp/pessoa.csv",true); 
	}

	@Override
	public void write(Pessoa p) throws Exception {
	   fw.write(p.getIdPessoa() + ";" + p.getNomePessoa() +
			   ";" + p.getEmailPessoa()+"\n");
	   fw.flush();  
	}
	
	
	@Override
	public void closeWrite() throws Exception {
   	   fw.close();	 		
	}

	
	@Override
	public void openRead() throws Exception {
		  fr = new FileReader("c:/temp/pessoa.csv"); //apontando para o arquivo
		  bf = new BufferedReader(fr); //buscando e trazendo 
	}
	@Override
	public void closeRead() throws Exception {
	      bf.close();
	      fr.close();
	}
	@Override
	public List<Pessoa> read() throws Exception {
	   List<Pessoa> listaPessoa = new ArrayList<Pessoa>();
	   String linha="";
	   while((linha = bf.readLine())!=null){
            
		       String token[]=linha.split(";");
		       
            Pessoa p = new Pessoa();
            p.setIdPessoa(new Integer(token[0]));
            p.setNomePessoa(token[1]);
            p.setEmailPessoa(token[2]);
            //armazena  na lista
            listaPessoa.add(p);
	   }
	return listaPessoa; //capturar tudo e retornar em Lista
	}

	 
	
	public static void main(String[] args) {
		
		/*
		try{
		  Pessoa p1 = new Pessoa(1,"jose","jose@gmail.com");
		  Pessoa p2 = new Pessoa(2,"carlos","carlos@gmail.com");
		  
		  ArquivoPessoa ap= new ArquivoPessoa();
		  
		    ap.openWrite();
		    ap.write(p1);
		    ap.write(p2);
		    ap.closeWrite();
		    
		  System.out.println("Dados gravados");
 
		}catch(Exception ex){
			System.out.println("Erro :"+ ex.getMessage());
		}
		*/
		
		
		try{
			ArquivoPessoa ap = new ArquivoPessoa();
			 
			ap.openRead();
			
			   List<Pessoa> lista =ap.read();
			
			ap.closeRead();
			
			for (Pessoa p : lista){
				System.out.println(p);
			}
			
			//Ementa que irei Seguir ?
			
		}catch(Exception e){
			
		}
		
		
		
		
	}

}
